/*******************************************************************************
* Copyright (c) 2013, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ui.internal.menus;
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.e4.ui.model.application.MApplicationElement;
import org.eclipse.jface.action.ContributionManager;
import org.eclipse.ui.ISourceProvider;
import org.eclipse.ui.menus.AbstractContributionFactory;
import org.eclipse.ui.menus.IMenuService;
/**
* @since 3.105
*
*/
public class SlaveMenuService implements IMenuService {
private IMenuService parentService;
/**
* @param provider
* @see org.eclipse.ui.services.IServiceWithSources#addSourceProvider(org.eclipse.ui.ISourceProvider)
*/
@Override
public void addSourceProvider(ISourceProvider provider) {
parentService.addSourceProvider(provider);
}
/**
* @param provider
* @see org.eclipse.ui.services.IServiceWithSources#removeSourceProvider(org.eclipse.ui.ISourceProvider)
*/
@Override
public void removeSourceProvider(ISourceProvider provider) {
parentService.removeSourceProvider(provider);
}
/**
* @param factory
* @see org.eclipse.ui.menus.IMenuService#addContributionFactory(org.eclipse.ui.menus.AbstractContributionFactory)
*/
@Override
public void addContributionFactory(AbstractContributionFactory factory) {
parentService.addContributionFactory(factory);
}
/**
*
* @see org.eclipse.ui.services.IDisposable#dispose()
*/
@Override
public void dispose() {
// nothing to do here yet.
}
/**
* @param factory
* @see org.eclipse.ui.menus.IMenuService#removeContributionFactory(org.eclipse.ui.menus.AbstractContributionFactory)
*/
@Override
public void removeContributionFactory(AbstractContributionFactory factory) {
parentService.removeContributionFactory(factory);
}
/**
* @param mgr
* @param location
* @see org.eclipse.ui.menus.IMenuService#populateContributionManager(org.eclipse.jface.action.ContributionManager,
* java.lang.String)
*/
@Override
public void populateContributionManager(ContributionManager mgr, String location) {
populateContributionManager(model, mgr, location);
}
public void populateContributionManager(MApplicationElement model, ContributionManager mgr,
String location) {
if (parentService instanceof SlaveMenuService) {
((SlaveMenuService) parentService).populateContributionManager(model, mgr, location);
} else if (parentService instanceof WorkbenchMenuService) {
((WorkbenchMenuService) parentService)
.populateContributionManager(model, mgr, location);
}
}
/**
* @param mgr
* @see org.eclipse.ui.menus.IMenuService#releaseContributions(org.eclipse.jface.action.ContributionManager)
*/
@Override
public void releaseContributions(ContributionManager mgr) {
parentService.releaseContributions(mgr);
}
/**
* @return
* @see org.eclipse.ui.menus.IMenuService#getCurrentState()
*/
@Override
public IEvaluationContext getCurrentState() {
return parentService.getCurrentState();
}
public SlaveMenuService(IMenuService parent, MApplicationElement model) {
parentService = parent;
this.model = model;
}
private MApplicationElement model;
public MApplicationElement getModel() {
return model;
}
}